草庐IT

Android PlusOneButton 不初始化

全部标签

c++ - 为什么在初始化私有(private)静态成员时允许调用私有(private)静态方法?

此代码按我想要的方式编译和工作,但为什么呢?#includeclassTest{private:staticbool_inited;staticbool_init(){std::cout如果我做了一个我认为不相关的改变:bool_inited=Test::_init();它不再编译,给我关于尝试调用私有(private)方法的预期错误。 最佳答案 ThiscodecompilesandworksthewayIwantit,butwhy?因为在使用它的地方,您是在类范围内操作,作为类的一部分。如果你写的话也是一样的:staticvoi

c++17 聚合初始化

我正在观看JasonTuner在youtube上的一个视频系列以及在此处找到的这个特定视频:AggregateInitializations他开始使用clang++c++03,然后将编译器更改为clang++c++11,然后当他合并基类层次结构时,他将其更改为使用c++17或使用最近构建的clang++的c++1z。我最近刚刚下载并安装了MSVS2017RC,我在IntelQuadCoreExtreme上运行Windows764位SP1。然而,当我在我的IDE中尝试观看他的视频时structB{doubleq;};structS:B{inti;floatf;};intmain(){Ss

c++ - 使用 Int 的初始化列表初始化 Long Double 的 vector

假设我有一个简单的类:classPvector{private:std::vectorpoint_list;public:Pvector(std::initializer_listcoords):point_list(coords){}Pvector(std::initializer_listcoords):point_list(coords){}};这将无法编译,因为longdouble模板化的std::vector无法从int类型模板化的初始化列表中初始化自身.然而,这很不方便,因为删除了第二个构造函数后,我无法在我的代码中执行以下操作:Pvectorpiece_movement(

c++ - 从相同的硬编码字符串文字初始化 std::string 和 std::wstring

我正在编写一些单元测试时偶然发现了一个已经成功困扰我几次的场景。我需要生成一些字符串来测试JSON编写器对象。由于作者同时支持UTF16和UTF8输入,所以我想用这两种输入进行测试。考虑以下测试:classUTF8;classUTF16;templatevoidwriteJson(std::map&data){//Writetofile}voidgenerateStringData(std::map&data){data.emplace("Lorem","LoremIpsumissimplydummytextoftheprintingandtypesettingindustry.");

c++ - union 中的标量成员是否计入公共(public)初始序列?

在下面的unionU中,如果a或b是活跃成员,是否定义了访问c?structA{inta;};structB{inta;doubleb;};unionU{Aa;Bb;intc;};在[class.union],该标准定义了一些规则,使使用union更容易(强调我的):[ Note:Onespecialguaranteeismadeinordertosimplifytheuseofunions:Ifastandard-layoutunioncontainsseveralstandard-layoutstructsthatshareacommoninitialsequence,andifa

c++ - 在 C++98 中初始化结构数组的优雅方式

我正在使用gcc版本4.9.2如果我使用编译器标志-std=c++0x进行编译,则以下代码编译正常。#include#includeusingnamespacestd;typedefstruct{vectora;intb;}MYTYPE;intmain(void){MYTYPEtest[]={{{1,2,3},4},{{5,6},7},{{},8}};}如果我删除-std=c++0x标志,编译器会报告:error:couldnotconvert‘{1,2,3}’from‘’to‘std::vector’什么是初始化test[]的优雅方式? 最佳答案

如果值来自成员变量,则C++复制初始化和const引用初始化之间的区别

考虑以下几点:#includeusingnamespacestd;classMyClass{public:MyClass(stringmyMemberInitValue);conststringgetMyMember1();private:stringmyMember;};MyClass::MyClass(stringmyMemberInitValue):myMember(myMemberInitValue){}conststringMyClass::getMyMember1(){returnmyMember;}intmain(){MyClassmyObj("HelloWorld");

c++ - 为什么作为返回类型的右值引用不能初始化非常量引用?

我读了this问题,我知道右值引用是左值。然而,对于这段代码,例子1,int&&fun(){return1;}intmain(){int&a=fun();}当我编译它时:error:invalidinitializationofnon-constreferenceoftype'int&'fromanrvalueoftype'int'所以C++编译器告诉我fun的返回类型是右值。右值引用如何变成右值?我认为编译器应该以相同的方式对待左值引用和右值引用,但是这段代码,示例2,int&fun(){intb;returnb;}intmain(){int&a=fun();}可以编译(尽管如此,我

c++ - 默认参数和空列表初始化

考虑以下代码,一个简单类的构造函数接受一个带默认值的参数。//Version1templatestructobject1{usingtype=T;constexprobject1(consttype&val=type()):value(val){}typevalue;};//Version2templatestructobject2{usingtype=T;constexprobject2(consttype&val={}):value(val){}typevalue;};//Mainintmain(intargc,char*argv[]){usingtype=/*Something*

c++ - 使用聚合初始化器初始化类的模板(聚合类型)成员但没有额外的括号

有这段代码:structVec3{intx;inty;intz;};templateclassmyProperty{public:myProperty(constT&initValue):m_value{initValue}{}private:Tm_value;};创建myProperty类型对象时:myPropertyip{1};myPropertyvp1{{1,2,3}};//myPropertyvp2{1,2,3};ERROR:myPropertydoesn'thaveamatchingconstructor.是否有一种优雅的方式使vp2初始化工作?为Vec3专门化myPrope